# -*- coding: latin-1 -*-
import sys,  random
from PyQt4.QtSql import QSqlDatabase, QSqlQuery
from PyQt4.QtGui import QMessageBox

from datosPrueba import personas,  mascotas

DEBUG = False

class conexion():
    def __init__(self, motor="QPSQL",  host="localhost",  dbname="mascota",  user="mboscovich",password="perico"):
        self.db = QSqlDatabase.addDatabase(motor)
        self.db.setHostName(host)
        self.db.setDatabaseName(dbname)
        self.db.setUserName(user)
        self.db.setPassword(password)
       
    def crearTablas(self):
        self.db.open()
        self.query = QSqlQuery()
        # creo tabla duenio
        if DEBUG: print "Creando las tablas..."
        self.query.exec_("""CREATE TABLE duenio (id_duenio INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
        apellido VARCHAR(40) NOT NULL,
        nombre VARCHAR(40) NOT NULL,
        domicilio VARCHAR(40) NOT NULL,
        telefono VARCHAR(40) NOT NULL,
        email VARCHAR(40) NOT NULL)""")
        
        # Creo la tabla animal
        self.query.exec_("""CREATE TABLE animal (
        id_animal INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
        nombre VARCHAR(40) NOT NULL,        
        sexo VARCHAR(40) NOT NULL,
        pelaje VARCHAR(40) NOT NULL,
        raza VARCHAR(40) NOT NULL,
        especie VARCHAR(40) NOT NULL,
        fechanacimiento DATETIME NOT NULL,
        fechaalta DATETIME NOT NULL,
        id_duenio INTEGER NOT NULL,
        FOREIGN KEY (id_duenio) REFERENCES duenio)""")
        
        # Creo la tabla cronograma
        self.query.exec_("""CREATE TABLE cronograma (
        id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
        fecha DATETIME NOT NULL,
        descripcion VARCHAR(40) NOT NULL)""")
        
        # Creo la tabla historiaclinica
        self.query.exec_("""CREATE TABLE historiaclinica (
        id_hclinica INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
        fecha DATETIME NOT NULL,
        descripcion VARCHAR(350) NOT NULL,
        id_animal INTEGER NOT NULL,
        FOREIGN KEY (id_animal) REFERENCES animal)""")
        
        # Creo la tabla sinopsis
        self.query.exec_("""CREATE TABLE sinopsis (
        id_sinopsis INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
        fecha DATETIME NOT NULL,
        temperatura INTEGER NULL,        
        descripcion VARCHAR(350) NOT NULL,
        costotratamiento DOUBLE NULL,
        id_hclinica INTEGER NOT NULL,
        FOREIGN KEY (id_hclinica) REFERENCES historiaclinica)""")
        
        # Creo la tabla cuenta
        self.query.exec_("""CREATE TABLE debe (
        id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
        costotratamiento DOUBLE NULL,  
        id_sinopsis INTEGER NOT NULL,
        id_duenio INTEGER NOT NULL,
        FOREIGN KEY (id_sinopsis) REFERENCES sinopsis,
        FOREIGN KEY (id_duenio) REFERENCES duenio)""")
        
        self.query.exec_("""CREATE TABLE haber (
        id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
        fecha_entrega DATETIME NOT NULL,
        entrega DOUBLE NULL,
        id_duenio INTEGER NOT NULL,
        FOREIGN KEY (id_duenio) REFERENCES duenio)""")
        self.db.close()
        
    def cargarDatos(self):
        if DEBUG: print "cargando datos de prueba..."
        self.db.open()
        datosPersonas=personas()
        datosMascotas=mascotas()
        for i in range(40):
            ape = datosPersonas.getApellido()
            nom = datosPersonas.getNombre()
            direccion = datosPersonas.getDireccion()
            telefono = datosPersonas.getTelefono()
            correo = datosPersonas.getCorreo(nom, ape)
            if DEBUG: print "Insertando a "+ape+", "+nom+':'+direccion+':'+telefono+':'+correo
            self.query.exec_("INSERT INTO duenio (nombre,apellido,telefono,domicilio,email) \
                VALUES ('"+nom+"','"+ape+"','"+telefono+"','"+direccion+"','"+correo+"')")
            for j in range(random.randint(1, 3)):
                if DEBUG: print "Insertando datos de mascotas"
                nombre = datosMascotas.getNombre()
                tipo = datosMascotas.getEspecie()
                raza = datosMascotas.getRaza(tipo)
                pelaje = datosMascotas.getPelaje(tipo) 
                sexo = datosMascotas.getSexo()
                self.query.exec_("INSERT INTO animal (nombre,especie,raza,pelaje,sexo,id_duenio,fechanacimiento,fechaalta) \
                VALUES ('"+nombre+"','"+tipo+"','"+raza+"','"+pelaje+"','"+str(sexo)+"','"+str(i)+"','2009-01-01','2009-01-02')")    
        self.db.close()
